'Description: Invokes the File Explorer "Properties" dialog without OCX

'Type SHELLEXECUTEINFO
'       cbSize As Long
'       fMask As Long
'       hwnd As Long
'       lpVerb As String
'       lpFile As String
'       lpParameters As String
'       lpDirectory As String
'       nShow As Long
'       hInstApp As Long
'       lpIDList As Long 'Optional parameter
'       lpClass As String 'Optional parameter
'       hkeyClass As Long 'Optional parameter
'       dwHotKey As Long 'Optional parameter
'       hIcon As Long 'Optional parameter
'       hProcess As Long 'Optional parameter
'End Type

'Const SEE_MASK_INVOKEIDLIST = &HC
'Const SEE_MASK_NOCLOSEPROCESS = &H40
'Const SEE_MASK_FLAG_NO_UI = &H400

'Declare Function ShellExecuteEX Lib "shell32.dll" Alias "ShellExecuteEx" _
        (SEI As SHELLEXECUTEINFO) As Long

'Public Function ShowProperties(filename As String, OwnerhWnd As Long) As Long

        
       '     'open a file properties property page for specified file if return value
       '     '<=32 an error occurred
       '     'From: Delphi code provided by "Ian Land" (iml@dircon.co.uk)
       Dim SEI As SHELLEXECUTEINFO
       Dim r As Long
        
       '     'Fill in the SHELLEXECUTEINFO structure
       With SEI
       .cbSize = Len(SEI)
       .fMask = SEE_MASK_NOCLOSEPROCESS Or SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI
       .hwnd = OwnerhWnd
       .lpVerb = "properties"
       .lpFile = filename
       .lpParameters = vbNullChar
       .lpDirectory = vbNullChar
       .nShow = 0
       .hInstApp = 0
       .lpIDList = 0
End With

 
'     'call the API
r = ShellExecuteEX(SEI)
 
'     'return the instance handle as a sign of success
ShowProperties = SEI.hInstApp
 
'End Function


'Paste the following into a command button, etc.
'Needs one textbox named Text1

        Dim r As Long
        Dim fname As String
       '      'get the filename and path from Text1
        fname = (Text1)
       '      'show the properties dialog, passing the filename
       '      'and the owner of the dialog
        r = ShowProperties(fname, Me.hwnd)
        
       '      'Display an error message if things didn't go as planned
        If r <= 32 Then MsgBox "Error"
